home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 0.9.1.3 stable / flock-0.9.1.3.en-US.win32.exe / flock / chrome / browser.jar / content / browser / bookmarks / bookmarksManager.js < prev    next >
Text File  |  2007-07-10  |  13KB  |  345 lines

  1. //@line 40 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/bookmarks/content/bookmarksManager.js"
  2.  
  3. var gSearchBox;
  4. ////////////////////////////////////////////////////////////////////////////////
  5. // Initialize the command controllers, set focus, tree root, 
  6. // window title state, etc. 
  7. function Startup()
  8. {
  9.   var metrics = Components.classes['@flock.com/metrics-service;1']
  10.     .getService(Components.interfaces.flockIMetricsService);
  11.   metrics.reportCount('favorites open');
  12.   const windowNode = document.getElementById("bookmark-window");
  13.   const bookmarksView = document.getElementById("bookmarks-view");
  14.   const bookmarksFolder = document.getElementById("bookmark-folders-view");
  15.  
  16.   var titleString;
  17.  
  18.   // If we've been opened with a parameter, root the tree on it.
  19.   if ("arguments" in window && window.arguments[0]) {
  20.     var title;
  21.     var uri = window.arguments[0];
  22.     bookmarksView.tree.setAttribute("ref", uri);
  23.     bookmarksFolder.setAttribute("hidden","true")
  24.     document.getElementById("bookmarks-search").setAttribute("hidden","true")
  25.     document.getElementById("bookmark-views-splitter").setAttribute("hidden","true")    
  26.     if (uri.substring(0,5) == "find:") {
  27.       title = BookmarksUtils.getLocaleString("search_results_title");
  28.       // Update the windowtype so that future searches are directed 
  29.       // there and the window is not re-used for bookmarks. 
  30.       windowNode.setAttribute("windowtype", "bookmarks:searchresults");
  31.     }
  32.     else
  33.       title = BookmarksUtils.getProperty(window.arguments[0], gNC_NS+"Name");
  34.     
  35.     titleString = BookmarksUtils.getLocaleString("window_title", title);
  36.   }
  37.   else {
  38.     titleString = BookmarksUtils.getLocaleString("bookmarks_title", title);
  39.     // always open the bookmark root folder
  40.     if (!bookmarksFolder.treeBoxObject.view.isContainerOpen(0))
  41.       bookmarksFolder.treeBoxObject.view.toggleOpenState(0);
  42.     bookmarksFolder.treeBoxObject.view.selection.select(0);
  43.   }
  44.  
  45.   bookmarksView.treeBoxObject.view.selection.select(0);
  46.  
  47.   document.title = titleString;
  48.  
  49.   document.getElementById("CommandUpdate_Bookmarks").setAttribute("commandupdater","true");
  50.   bookmarksView.focus();
  51.  
  52.   var bkmkTxnSvc = Components.classes["@mozilla.org/bookmarks/transactionmanager;1"]
  53.                              .getService(Components.interfaces.nsIBookmarkTransactionManager);
  54.   bkmkTxnSvc.transactionManager.AddListener(BookmarkEditMenuTxnListener);
  55.   initOnlineFavoritesObservor();
  56. }
  57.  
  58.  
  59. function Shutdown()
  60. {
  61.   var metrics = Components.classes['@flock.com/metrics-service;1']
  62.     .getService(Components.interfaces.flockIMetricsService);
  63.   metrics.reportCount('favorites close');
  64.   
  65.   uninitOnlineFavoritesObservor();
  66.   var bkmkTxnSvc = Components.classes["@mozilla.org/bookmarks/transactionmanager;1"]
  67.                              .getService(Components.interfaces.nsIBookmarkTransactionManager);
  68.   bkmkTxnSvc.transactionManager.RemoveListener(BookmarkEditMenuTxnListener);
  69.   // Store current window position and size in window attributes (for persistence).
  70.   var win = document.getElementById("bookmark-window");
  71.   win.setAttribute("x", screenX);
  72.   win.setAttribute("y", screenY);
  73.   win.setAttribute("height", outerHeight);
  74.   win.setAttribute("width", outerWidth);
  75. }
  76.  
  77. var gConstructedViewMenuSortItems = false;
  78. function fillViewMenu(aEvent)
  79. {
  80.   var adjacentElement = document.getElementById("fill-before-this-node");
  81.   var popupElement = aEvent.target;
  82.   
  83.   var bookmarksView = document.getElementById("bookmarks-view");
  84.   var columns = bookmarksView.columns;
  85.  
  86.   if (!gConstructedViewMenuSortItems) {
  87.     for (var i = 0; i < columns.length; ++i) {
  88.       var accesskey = columns[i].accesskey;
  89.       var menuitem  = document.createElement("menuitem");
  90.       var name      = BookmarksUtils.getLocaleString("SortMenuItem", columns[i].label);
  91.       menuitem.setAttribute("label", name);
  92.       menuitem.setAttribute("accesskey", columns[i].accesskey);
  93.       menuitem.setAttribute("resource", columns[i].resource);
  94.       menuitem.setAttribute("id", "sortMenuItem:" + columns[i].resource);
  95.       menuitem.setAttribute("checked", columns[i].sortActive);
  96.       menuitem.setAttribute("name", "sortSet");
  97.       menuitem.setAttribute("type", "radio");
  98.       
  99.       popupElement.insertBefore(menuitem, adjacentElement);
  100.     }
  101.     
  102.     gConstructedViewMenuSortItems = true;
  103.   }  
  104.  
  105.   const kPrefSvcContractID = "@mozilla.org/preferences-service;1";
  106.   const kPrefSvcIID = Components.interfaces.nsIPrefService;
  107.   var prefSvc = Components.classes[kPrefSvcContractID].getService(kPrefSvcIID);
  108.   var bookmarksSortPrefs = prefSvc.getBranch("browser.bookmarks.sort.");
  109.  
  110.   if (gConstructedViewMenuSortItems) {
  111.     var resource = bookmarksSortPrefs.getCharPref("resource");
  112.     var element = document.getElementById("sortMenuItem:" + resource);
  113.     if (element)
  114.       element.setAttribute("checked", "true");
  115.   }  
  116.  
  117.   var sortAscendingMenu = document.getElementById("ascending");
  118.   var sortDescendingMenu = document.getElementById("descending");
  119.   var noSortMenu = document.getElementById("natural");
  120.   
  121.   sortAscendingMenu.setAttribute("checked", "false");
  122.   sortDescendingMenu.setAttribute("checked", "false");
  123.   noSortMenu.setAttribute("checked", "false");
  124.   var direction = bookmarksSortPrefs.getCharPref("direction");
  125.   if (direction == "natural")
  126.     sortAscendingMenu.setAttribute("checked", "true");
  127.   else if (direction == "ascending") 
  128.     sortDescendingMenu.setAttribute("checked", "true");
  129.   else
  130.     noSortMenu.setAttribute("checked", "true");
  131. }
  132.  
  133. function onViewMenuSortItemSelected(aEvent)
  134. {
  135.   var resource = aEvent.target.getAttribute("resource");
  136.   
  137.   const kPrefSvcContractID = "@mozilla.org/preferences-service;1";
  138.   const kPrefSvcIID = Components.interfaces.nsIPrefService;
  139.   var prefSvc = Components.classes[kPrefSvcContractID].getService(kPrefSvcIID);
  140.   var bookmarksSortPrefs = prefSvc.getBranch("browser.bookmarks.sort.");
  141.  
  142.   switch (resource) {
  143.   case "":
  144.     break;
  145.   case "direction":
  146.     var dirn = bookmarksSortPrefs.getCharPref("direction");
  147.     if (aEvent.target.id == "ascending")
  148.       bookmarksSortPrefs.setCharPref("direction", "natural");
  149.     else if (aEvent.target.id == "descending")
  150.       bookmarksSortPrefs.setCharPref("direction", "ascending");
  151.     else
  152.       bookmarksSortPrefs.setCharPref("direction", "descending");
  153.     break;
  154.   default:
  155.     bookmarksSortPrefs.setCharPref("resource", resource);
  156.     var direction = bookmarksSortPrefs.getCharPref("direction");
  157.     if (direction == "descending")
  158.       bookmarksSortPrefs.setCharPref("direction", "natural");
  159.     break;
  160.   }
  161.  
  162.   aEvent.stopPropagation();
  163. }  
  164.  
  165. var gConstructedColumnsMenuItems = false;
  166. function fillColumnsMenu(aEvent) 
  167. {
  168.   var bookmarksView = document.getElementById("bookmarks-view");
  169.   var columns = bookmarksView.columns;
  170.   var i;
  171.  
  172.   if (!gConstructedColumnsMenuItems) {
  173.     for (i = 0; i < columns.length; ++i) {
  174.       var menuitem = document.createElement("menuitem");
  175.       menuitem.setAttribute("label", columns[i].label);
  176.       menuitem.setAttribute("resource", columns[i].resource);
  177.       menuitem.setAttribute("id", "columnMenuItem:" + columns[i].resource);
  178.       menuitem.setAttribute("type", "checkbox");
  179.       menuitem.setAttribute("checked", columns[i].hidden != "true");
  180.       aEvent.target.appendChild(menuitem);
  181.     }
  182.  
  183.     gConstructedColumnsMenuItems = true;
  184.   }
  185.   else {
  186.     for (i = 0; i < columns.length; ++i) {
  187.       var element = document.getElementById("columnMenuItem:" + columns[i].resource);
  188.       if (element && columns[i].hidden != "true")
  189.         element.setAttribute("checked", "true");
  190.     }
  191.   }
  192.   
  193.   aEvent.stopPropagation();
  194. }
  195.  
  196. function onViewMenuColumnItemSelected(aEvent)
  197. {
  198.   var resource = aEvent.target.getAttribute("resource");
  199.   if (resource != "") {
  200.     var bookmarksView = document.getElementById("bookmarks-view");
  201.     bookmarksView.toggleColumnVisibility(resource);
  202.   }  
  203.  
  204.   aEvent.stopPropagation();
  205. }
  206.  
  207. function onFocus(aEvent)
  208. {
  209.   document.getElementById(aEvent.target.id).onFocus(aEvent);
  210. }
  211. function onViewSelected(aEvent)
  212. {
  213.   var statusBar = document.getElementById("statusbar-text");
  214.   var displayValue;
  215.   var selection = aEvent.target.getTreeSelection();
  216.   var bookmarksView = document.getElementById("bookmarks-view");
  217.   if (selection.length == 0)
  218.   {
  219.     return;
  220.   }
  221.   
  222.   if (aEvent.target.id == "bookmark-folders-view" && selection)
  223.     bookmarksView.tree.setAttribute("ref",selection.item[0].Value);
  224.       
  225.   if (statusBar && selection.length == 1) {
  226.     //protocol broken since we have unique ID...
  227.     //var protocol = selection.protocol[0];
  228.     if (selection.isContainer[0] && selection.item[0]) {// && protocol != "find" && protocol != "file") {
  229.       RDFC.Init(aEvent.target.db, selection.item[0]);
  230.       var count = 0;
  231.       var children = RDFC.GetElements();
  232.       while (children.hasMoreElements()) {
  233.         if (BookmarksUtils.resolveType(children.getNext()) != "BookmarkSeparator")
  234.           count++;
  235.       }
  236.  
  237.       displayValue = BookmarksUtils.getLocaleString("status_foldercount", String(count));
  238.     }
  239.     else if (selection.type[0] == "Bookmark")
  240.       displayValue = BookmarksUtils.getProperty(selection.item[0], gNC_NS+"URL", aEvent.target.db)
  241.     else
  242.       displayValue = "";
  243.     statusBar.label = displayValue;
  244.   }
  245. }
  246.  
  247. function exportOnlineBookmarks (aMenuitem) {
  248. //  try {
  249.     const kFilePickerContractID = "@mozilla.org/filepicker;1";
  250.     const kFilePickerIID = Components.interfaces.nsIFilePicker;
  251.     const kFilePicker = Components.classes[kFilePickerContractID].createInstance(kFilePickerIID);
  252.       
  253.     const kTitle = BookmarksUtils.getLocaleString("EnterExport");
  254.     kFilePicker.init(window, kTitle, kFilePickerIID["modeSave"]);
  255.     kFilePicker.appendFilters(kFilePickerIID.filterHTML | kFilePickerIID.filterAll);
  256.     kFilePicker.defaultString = "bookmarks.html";
  257.     var fileName;
  258.     if (kFilePicker.show() != kFilePickerIID.returnCancel) {
  259.       fileName = kFilePicker.file.path;
  260.       if (!fileName) return;
  261.     }
  262.     else return;
  263.  
  264.     var file = Components.classes["@mozilla.org/file/local;1"]
  265.                          .createInstance(Components.interfaces.nsILocalFile);
  266.     if (!file)
  267.       return;
  268.     file.initWithPath(fileName);
  269.     if (!file.exists()) {
  270.       file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644);
  271.     }
  272.     writeOnlineBookmarks (aMenuitem.id, file);
  273. //  }
  274. //  catch (e) {
  275. //    return;
  276. //  }
  277. }
  278.  
  279. function writeOnlineBookmarks (aStreamId, aFile) {
  280.   dump ('writeOnlineBookmarks\n');
  281.   var faves_coop = Components.classes['@flock.com/singleton;1']
  282.                            .getService(Components.interfaces.flockISingleton)
  283.                            .getSingleton('chrome://browser/content/flock/common/load-faves-coop.js')
  284.                            .wrappedJSObject;
  285.   var stream = faves_coop.get(aStreamId);
  286.  
  287.   // Build the HTML output
  288.   // We're generating very wrong and very invalid HTML
  289.   // (like opening a bunch of <p> tags and never closing them)
  290.   // but that's to stick with the legacy bookmarks file format
  291.   var result = '<!DOCTYPE NETSCAPE-Bookmark-file-1>\n'
  292.     + '<!-- This is an automatically generated file.\n'
  293.     + 'It will be read and overwritten.\n'
  294.     + 'DO NOT EDIT! -->\n'
  295.     + '<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">\n'
  296.     + '<TITLE>Bookmarks</TITLE>\n'
  297.     + '<H1>Bookmarks</H1>\n'
  298.     + '<DL><p>\n'
  299.     + '    <DT><H3 ID="'+aStreamId+'">' + stream.name + '</H3>\n'
  300.     + '    <DL><p>\n';
  301.  
  302.   var _enum = stream.children.enumerate();
  303.   while (_enum.hasMoreElements()) {
  304.     var tag = _enum.getNext();
  305.     result += '        <DT><H3 ID="'+tag.id()+'">'+tag.name+'</H3>\n'
  306.      + '        <DL><p>\n';
  307.     var enum2 = tag.children.enumerate();
  308.     while (enum2.hasMoreElements()) {
  309.       var bookmark = enum2.getNext();
  310.       result += '            <DT><A HREF="'+bookmark.URL+'" ID="'+bookmark.id()+'">'+bookmark.name+'</A>\n';
  311.     }
  312.     result += '        </DL><p>\n';
  313.   }
  314.  
  315.   result += '    </DL><p>\n';
  316.     + '</DL><p>';
  317.  
  318.   // Write it to the selected file
  319.   Output2File(result, aFile);
  320. }
  321.  
  322. function Output2File(aContent, aFile)
  323. {
  324.   try {
  325.     var obj_Transport = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
  326.     obj_Transport.init(aFile, 0x04 | 0x08,
  327.                           00400 | 00200 | 00040 | 00004, 0);
  328.     // nsIFileoutputStream is not i18n-aware
  329.     var charset = "UTF-8";  
  330.     var os = Components.classes["@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream);
  331.     os.init (obj_Transport, charset, 0, 0x0000);
  332.     os.writeString(aContent);
  333.     os.close();
  334.  
  335.     obj_Transport.close();
  336.     dump("done\n");
  337.   }
  338.   catch(e){
  339.     alert(e);
  340.   }
  341.    
  342.   return true;
  343. }
  344.  
  345.